perm filename TSS.PRO[ESS,JMC] blob sn#005523 filedate 1971-10-17 generic text, type T, neo UTF8
00100	A MODIFIABLE TIME-SHARING SYSTEM
00200	
00300	
00400		These thoughts are inspired by Andy Moorer's statement that
00500	it will take 100 hours of system down time to debug the IMP interface
00600	software and that it took 300 hours to debug the data disk code.
00700	
00800		By way of information, the complexity in the IMP code comes
00900	from the fact that it allows a number of jobs in our system to 
01000	communicate simultaneously with jobs in several other systems.
01100	
01200		It seems likely that the amount of system down time in this
01300	case could have been reduced by having a pseudo user program
01400	that communicates with the outside world and sorts out the messages
01500	to and from the different users within our own system and communicates
01600	with them by an internal communication mechanism.
01700	
01800		However, all this raises the general question of how to make
01900	a time sharing system that can be improved as much as possible while
02000	the system is running.  Here are some ideas:
02100	
02200		1. The modularity and the hierarchical structure of Multics
02300	and the IBM TSS undoubtedly contribute something towards this, but
02400	in fact these systems took an extraordinary length of time before 
02500	they were usable at all, and my impression is that improvements
02600	still require lots of system down time.  It would be interesting
02700	to know what TENEX offers in this direction.
02800	
02900		2. Putting as much of the system as possible into phantom
03000	users like the SPOOL and ACT, and LOGIN, LOGOUT, and the error
03100	phantom in THOR and ZEUS helps, but it is not the whole story.
03200	In particular, service programs for new i-o devices can't be
03300	handled this way.
03400	
03500		3. Well, maybe they can!  Suppose the actual i-o instructions
03600	are handled at least temporarily by UUO's, the program being debugged
03700	is locked into core, e.g. by spacewar mode, and its communication
03800	with user programs is also handled by UUO's.  This is not as good 
03900	as having a machine in which parts of the system can be restricted
04000	to certain i-o devices and to certain areas of memory.  The system
04100	would also have to be able to subject parts of the system to 
04200	clock interrupts and it would have to know how to go on if
04300	such a part of the system tried something illegal.  
04400	
04500		4. Would it be possible to debug a scheduler or a swapper
04600	with users on the system?  This seems a bit far out, but perhaps
04700	the system could go to a standard way of doing things when the 
04800	new way got confused.
04900	
05000		5. Even further out might be debugging a file system.
05100	
05200		6. In the long run a simulation of the system within
05300	the system is required.